package com.mzy;

import com.mzy.utils.Utils;

import java.util.Arrays;

public class SelectSort {


    // public static void sort(int[] arr) {
    //     int N = arr.length;
    //     int minIndex;
    //
    //     for (int i = 0; i < N; i++) {
    //         minIndex = i;
    //         for (int j = i + 1; j < N; j++) {
    //             if (arr[minIndex] > arr[j]) {
    //                 minIndex = j;
    //             }
    //         }
    //         swap(arr, i, minIndex);
    //     }
    // }


    public static void main(String[] args) {
        Integer[] arr = {2, 1, 56, 8, 3, 7, 3, 9, 3, 89};
        sort(arr);

        System.out.println(Arrays.toString(arr));

        Utils.testSort(SelectSort::sort);
    }

    private static void sort(Integer[] arr) {
        // 2, 1, 56, 8, 3, 7, 3, 9, 3, 89
        // 1  2  56  8  3  7  3  9  3  89 第一轮
        //    2  56  8  3  7  3  9  3  89 第二轮
        //       3   8  56 7  3  9  3  89 第三轮
        //           3  56 7  8  9  3  89 第四轮
        //              3  7  8  9  56 89 第五轮
        //                 7  8  9  56 89 第六轮
        //                    8  9  56 89 第七轮
        //                       9  56 89 第八轮
        //                          56 89 第九轮

        int n = arr.length;
        for (int i = 0; i < n; i++) {
            int minIndex = i;
            for (int j = i + 1; j < n; j++) {
                if (arr[minIndex] > arr[j]) {
                    minIndex = j;
                }
            }
            if (i != minIndex)
                Utils.swap(arr, i, minIndex);
        }
    }
}
